import { get, patch, post } from '~/utils/request'

/**
 * 管理员登录
 * @param adminname 管理员用户名
 * @param password 密码
 * @returns 登录结果
 */
export function adminLogin(adminname: string, password: string) {
  return post('/admin/login', { adminname, password })
}

/**
 * 获取管理员详情
 * @param adminid 管理员ID
 * @returns 管理员详情信息
 */
export function getAdminDetail(adminid: string) {
  return get('/admin/detail', { adminid })
}

/**
 * 获取管理员列表
 * @returns 管理员列表数据
 */
export function getAdminList() {
  return get('/admin/list')
}

/**
 * 添加管理员
 * @param adminData 管理员数据
 * @param adminData.adminname 管理员用户名
 * @param adminData.password 管理员密码
 * @param adminData.role 管理员角色
 * @param adminData.checkedKeys 选中的权限键值
 * @param adminData.departmentId 部门ID
 * @param adminData.departmentName 部门名称
 * @returns 添加结果
 */
export function addAdmin(adminData: {
  adminname: string
  password: string
  role: string
  checkedKeys: string[] | number[]
  departmentId: string | number
  departmentName: string
}) {
  return post('/admin/add', { adminname: adminData.adminname, password: adminData.password })
}

/**
 * 删除管理员
 * @param adminid 管理员ID
 * @returns 删除结果
 */
export function deleteAdmin(adminid: string) {
  return post('/admin/delete', { adminid })
}

/**
 * 更新管理员信息
 * @param adminid 管理员ID
 * @param adminData 管理员更新数据
 * @param adminData.adminname 管理员用户名
 * @param adminData.password 管理员密码
 * @param adminData.roleKeys 角色权限键值
 * @param adminData.departmentName 部门名称
 * @returns 更新结果
 */
export function updateAdmin(
  adminid: string,
  adminData: {
    adminname?: string
    password?: string
    roleKeys?: string[] | number[]
    departmentName?: string
  },
) {
  return patch(`/admin/update/${adminid}`, { adminid, ...adminData })
}
